#pragma once
#include <vector>
#include "PF_Item.h"
#include "ID_To_PF.h"
using namespace std;

#define MAX_ROLE_COUNT 6
#define MAX_PROFESSION_COUNT 5


class PF_List{
private:
    vector<vector<PF_Item>> items;
    
    static  PF_List* originalPFList;

public:

    static void getOriginalPFListCopy(PF_List& pfList);

    PF_List(){
        items.clear();
    };

    PF_List(vector<vector<PF_Item>>& items){
        this->items=items;
    };

    /* set the availability of an item with the given ID, return 0 if successful, -1 if invalid role or profession */
    int setAvailable(int id, bool available);


    int setItem(int id,const PF_Item& item);

    void setItems(vector<vector<PF_Item>>& items);


    vector<vector<PF_Item>>& getItems(){
        return items;
    }

    int getItem(int id, PF_Item& item);

    int getItem(int role, int profession, PF_Item& item);


    int BanProfession(int teamID, int PF_ID);

    int PickProfession(int teamID, int PF_ID);

    int AssignProfessions(int teamID,const vector<int>& PF_IDs);
    int AssignProfession(int teamID, int assignID, int PF_ID);

};



